package Queue;

import java.util.Comparator;
import java.util.PriorityQueue;

/**
 * @Classname JZ40最小的k个数
 * @Description TODO
 * @Date 2023/3/7 21:21
 * @Created by xjl
 */
public class JZ40最小的k个数 {

    public int[] getLeastNumbers2(int[] arr, int k) {
        int[] result=new int[k];
        if (k==0){
            return result;
        }
        // 构建的是一个的优先队列  小根堆数据结构
        PriorityQueue<Integer> queue=new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2.compareTo(o1);
            }
        });
        // 添加k个值到小根堆中
        for (int i=0;i<k;i++){
            queue.offer(arr[i]);
        }
        for (int i=k;i<arr.length;i++){
            if (queue.peek()>arr[i]){
                queue.poll();
                queue.offer(arr[i]);
            }
        }
        for (int i=0;i<k;i++){
            result[i]=queue.poll();
        }
        return result;
    }
}
